package com.hr.leetcode.栈与队列;

import java.util.Arrays;
import java.util.PriorityQueue;

/**
 * @author 周恒哲
 * 利用最小堆，维护k个值
 * @date 2020/05/11
 **/
public class _703_数据流中的第K大元素 {
    final PriorityQueue<Integer> queue;
    final int k;
    public _703_数据流中的第K大元素(int k, int[] nums) {
        this.k=k;
        queue=new PriorityQueue<>(k);
        for (int num:nums) {
            add(num);
        }
    }

    public int add(int val) {
        if (queue.size()<k){
            queue.offer(val);
        }else if (queue.peek()<val){//用于检索或获取Queue的第一个元素或Queue头部的元素。检索到的元素不会从队列中删除或删除。
            queue.poll();
            queue.offer(val);
        }
        return queue.peek();
    }
}
